package com.yc.cloud.admin.dto.response;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * MediaKit API 通用响应对象
 * 根据 ZLMediaKit 官方文档定义的响应格式
 * 
 * @author kinggu
 * @since 2025-01-XX
 */
@Data
@ApiModel(value = "MediaKitResponse", description = "MediaKit API 通用响应")
public class MediaKitResponse<T> {

    /**
     * 执行结果代码
     * 0: 执行成功
     * -1: 业务代码执行失败
     * -100: 鉴权失败
     * -200: sql执行失败
     * -300: 参数不合法
     * -400: 代码抛异常
     */
    @ApiModelProperty("执行结果代码")
    private Integer code;

    /**
     * 失败提示信息
     */
    @ApiModelProperty("失败提示信息")
    private String msg;

    /**
     * 业务代码执行失败具体原因（当code=-1时提供）
     */
    @ApiModelProperty("业务代码执行失败具体原因")
    private Integer result;

    /**
     * 成功时返回的数据（当code=0时提供）
     */
    @ApiModelProperty("成功时返回的数据")
    private T data;

    /**
     * 判断是否成功
     */
    public boolean isSuccess() {
        return code != null && code == 0;
    }
}
